摄像头(以 OV5647 为例)
本节以 OV5647 摄像头模组为例,说明在 NG4520 平台的开发适配流程,涵盖硬件前置、设备树、驱动编译、系统加载和调试等完整步骤。
Camera 架构与名词解释
名词 | 解释 |
---|---|
ISP | 图像信号处理器,用于图像去噪 、白平衡、色彩校正等。 |
Bayer | 即摄像头传感器,使用Bayer滤色阵列捕获图像。 |
CSI | 摄像头串行接口,用于摄像头与处理器之间的数据传输。 |
V4L2 | Linux内核的视频捕获和输出框架。 |
libargus | NVIDIA提供的高级摄像头控制库。 |
Camera Core Library | 提供应用程序与内核模式V4L2驱动程序之间的控制和处理功能。 |
GStreamer | 开源的多媒体处理框架,用于音视频处理。 |
Host1x | NVIDIA Tegra SoC中的主机接口控制器。 |
Aperture | 光圈控制,用于调节镜头的光圈大小。 |
UVC | USB视频类,用于USB摄像头的驱动程序。 |
VI | 视频输入模块,用于接收和处理视频数据。 |
Camera 软件架构说明
NVIDIA 平台支持两种 Camera 驱动架构:
- Camera Core Library Interface:支持 ISP 访问和高级图像处理,应用层通过 libargus API 访问(如
nvgstcapture-1.0
工具)。 - Direct V4L2 Interface:直接使用 V4L2 驱动,不支持 NVIDIA ISP。
建议开发时采用 Camera Core Library Interface,以便充分利用 NVIDIA ISP 能力。
OV5647 驱动适配流程
前置条件
-
获取摄像头 I2C 地址及线序,确认 PWDN/RESET 引脚
-
获取上电时序、外部时钟、支持分辨率/帧率、滤色器阵列类型(BGGR/GBRG/GRBG/RGGB)
-
确认连接接口及 tegra_sinterface 对应关系(如 NG452X 平台 cam0=serial_c)
本例基于 Jetson Orin NX,硬件连接接口为 cam0。
设备树配置
-
创建设备树 Overlay 文件,路径示例如下:
Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/overlay/tegra234-p3767-camera-p3768-ov5647.dts
-
tegra-camera-platform 节点配置,配置视频流端口及连接关系,示例:
tegra-capture-vi {
num-channels = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
vi_port1: port@1 {
reg = <0>;
rbpcv2_ov5647_vi_in1: endpoint {
port-index = <2>;
bus-width = <2>;
remote-endpoint = <&rbpcv2_ov5647_csi_out1>;
};
};
};
};